{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Multi-point flux approximation (MPFA)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Porepy supports mpfa discretization for darcy flow problem:\n",
    "\\begin{equation}\n",
    "q = -K \\nabla p,\\quad \\nabla \\cdot q = f\n",
    "\\end{equation}\n",
    "\n",
    "We can write this as a single equation of pressure:\n",
    "\\begin{equation}\n",
    "-\\nabla \\cdot K\\nabla  p = f\n",
    "\\end{equation}\n",
    "\n",
    "For each control volume $\\Omega_k$ we then have\n",
    "\\begin{equation}\n",
    "\\int_{\\Omega_k} f dv = \\int_{\\partial\\Omega_k} (K\\nabla p)\\cdot n dA,\n",
    "\\end{equation}\n",
    "\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": true
   },
   "source": [
    "To solve this system we first have to create the grid. Then we need to define boundary conditions. We set the bottom boundary as a Dirichlet boundary. The other boundaries are set to Neuman. We also need to create the permeability tensor:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import porepy as pp\n",
    "\n",
    "# Create grid\n",
    "n = 5\n",
    "g = pp.CartGrid([n,n])\n",
    "g.compute_geometry()\n",
    "\n",
    "# Define boundary type\n",
    "dirich = np.ravel(np.argwhere(g.face_centers[1] < 1e-10))\n",
    "bound = pp.BoundaryCondition(g, dirich, 'dir')\n",
    "\n",
    "# Create permeability matrix\n",
    "k = np.ones(g.num_cells)\n",
    "perm = pp.SecondOrderTensor(k)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We now define the boundary conditions. We set zero pressure on the bottom boundary, and a constant innflow on the top boundary. Note that the traction on the Neumann boundary is the discharge, not the flux. To get the discharge for each boundary face we scale the flux by the face areas."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "top_faces = np.ravel(np.argwhere(g.face_centers[1] > n - 1e-10))\n",
    "bot_faces = np.ravel(np.argwhere(g.face_centers[1] < 1e-10))\n",
    "\n",
    "p_b = np.zeros(g.num_faces)\n",
    "p_b[top_faces] = -1 * g.face_areas[top_faces]\n",
    "p_b[bot_faces] = 0\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We can now solv this problem using the Mpfa class. We assume no source or sinks $f=0$:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home/runar/work/porepy/src/porepy/grids/partition.py:40: UserWarning: Could not import pymetis. Partitioning by metis will not work.\n",
      "  warnings.warn(\"Could not import pymetis. Partitioning by metis will not work.\")\n"
     ]
    }
   ],
   "source": [
    "mpfa_solver = pp.Mpfa(\"flow\")\n",
    "\n",
    "f = np.zeros(g.num_cells)\n",
    "\n",
    "specified_parameters = {\"second_order_tensor\": perm, \"source\": f, \"bc\": bound, \"bc_values\": p_b}\n",
    "data = pp.initialize_default_data(g, {}, \"flow\", specified_parameters)\n",
    "\n",
    "mpfa_solver.discretize(g, data)\n",
    "A, b = mpfa_solver.assemble_matrix_rhs(g, data)\n",
    "\n",
    "p_class = np.linalg.solve(A.A, b)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home/runar/python_env/porepy/lib/python3.6/site-packages/mpl_toolkits/mplot3d/axes3d.py:753: UserWarning: Attempting to set identical bottom==top results\n",
      "in singular transformations; automatically expanding.\n",
      "bottom=0.0, top=0.0\n",
      "  'bottom=%s, top=%s') % (bottom, top))\n"
     ]
    },
    {
     "data": {
      "image/png": "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zjvv1M9+9jNdffXVboYKoIn4lQmajbVWX3zxhdq1axf2NpfWWllrFQyGn020b98+EoYGFBYWqry8XN26dXM7lKhV1fZGwlA/Y4w8Ho8CgRist0eoc+fO8nq9OnHihNuhRCVjjPr27au4uDjt3LlTtReXTUtL03vvvaeHH36YqgJav6oVod16uIRKA5qNMUYZGRlav3592O0NtSSFQiG1a9eOliQHpaWltG01oKr1hknQznw+nzZu3MhkaAehUEjHjx9XYmIiv8hw4PP5dOzYsRqtSlWTo621uvvuu9W5c2d16tSpxudoUwKiG/86oFmF+4f1zApDuJak/fv3q6ioqHrhIISXn5+vkpIS9e/f3+1QotqRI0fk8/mUnp7udihRjcnikdm/f7+stTH98/T111/r29/+tvbv369evXrpzTffrFFNrro99rJly/T2229Lkh5++GHdddddkqQ1a9ZoxowZKi4u1q233qqXX35Zxhi9//77Gjx4sHbs2KENGzYoIyOjesznnntOr7/+ujwej375y19qypQpkqTMzEw98MADCgaDmjNnjh555JEWPBNAbDG1S4i1OG4EnFTd5jIrK0uXX3651q1bp/HjxysUCmnjxo1h25IqKioUDP7/9u49OuY7/+P46zuZJnENgm0kpCJxS4r2l4Q0JWopka26VJqsXixbevOrdVm2TrVb7BZdly7bH1LW9uzGUhZbWmtdVqtSitCfIEEkkrhOSIIkk5l8f3+oHJp2jF8xDc/HOd8/vjOT73zO95ycmfe83+/P2/m9Q99wxbXNz9wn1642QfMLumtX/1+/PYwL17t2e+N79UeNBQsWqH79+kpOTlZqaqpKSko0YsSI615TXFysF198Ue+99558fHz00ksv6f3339e0adO0f/9+NW3aVKWlpbp06ZICAwPl5+dXta12Tk6OIiIitGPHDklXZj4kJydr586dKigoUM+ePZWZmSlJat26tTZu3KigoCBFRUUpNTVV7du3v7M3BLdSjfhAM5pEmurvwQx/irHbNM3IG7/w1uJTFHeU0+lUZWXld2YYTpw4oQsXLig8PPye/TB2V2Zmppo3b66AgABPL+VHjyZo91RWVmr37t00Q7vBZrPp5MmTioiI8PRSPGLkyJFav369vL29lZGRoV27dunMmTPXZRxWrFih+Ph4tWzZUp988okuXryoESNGaMyYMbpw4YJ2796tbdu2aeDAgcrPz1d8fHxVxiE2NlYOh0NhYWF64IEHFBMTo6SkJL333nv661//qrNnzyosLEw5OTmKi4tTSEiIHnjgAZWVlalnz55q1qwZJZvAbcA3M9wRV0uSKisrv/P5vLw8nT9/noDBDRcvXlRJScl3bl+L69EE7T6LxSLDMGiGdoO/v78qKyt1/vx5Ty/FI86ePav7779fs2fPVq9evVS7dm3FxcVp9uzZVa85efKkgoKC1KRJEy1YsECDBw/WCy+8oLlz51bt9DZ58mT99re/la+vr7Zs2aJPPvlEkpSbm6uoqChlZWXppz/9qT7++GM1b95c48ePV3p6ugYPHqzExES1a9fuutk0kydP1sCBAwkYcPtdnQjtqcNDyDTgjnA6nd/b9Gy32+VwOFSrVi3t3r3bA6urWS5fviwfHx8+GN1AE/TNuToZ2svLy9NL+dGrrKzUvn377toSwfHjx6uwsLDa48OGDZPD4dCuXbu0cuVKzZo1S06nU+3bt9eYMWP0xBNPSLqSObbb7UpJSdFDDz2k8vJynTp1Sq1atVJeXp4+/fRTZWRkaP78+bLb7crNzdXTTz+tNm3aKD8/X//6178UGRmpevXqKTs7u9o6Pv/8cz366KMEucAdRE8Dbhun06ny8nKlpaV9b8lDQUGBzp49q4iICL6ouOH06dM6f/682rZt6+ml1AinT59WaWnpPd20ejMKCgrkdDrVvHlzTy+lRjh27Jjuu+++e+5+Pfzww1q/fr2ioqK0a9cu9e3bVxs3blRYWJhatGih4OBgDRgwQHv37lWrVq1UVlamvLw8tWzZUhs3btQXX3yhgIAA1atXT+PHj9fnn3+u8PBwTZgwQQ0bNpTNZtOXX36pqKgo2Ww2NW3aVA0bNtRDDz2k5cuXa/Dgwfriiy+qtgoOCQlRTk6OateuLUkaNGiQNmzYQHN0zVQjInCjcaSpfh784W6JZ3oaCBpw21RWVqq4uFjp6enfO4uhvLxcPj4+d3hlNZfdbtd99913V/6yeTs4nU4ZhkHJm5sqKytVWVlJ0/hNsNvt8vb29vQybpvx48dXK8MqLCxUdHS0duzYoaSkJJWUlEiSVq9erfXr1ys1NVU2m01paWnq3bu3KioqtHnzZk2fPl2vvPKKfHx8lJycrIULFyo8PFwXL15UTk6OLBaL6tevrzNnzqh58+Zq2rSp8vLyqrZvDQwMVI8ePfSPf/xDrVq1UqNGjXTw4MGqAXL9+/fXnDlz1KdPHy1dulQDBw6kObrmqREfboZ/pKkEDwYNH9IIjbuMxWKRn5+f4uLiPL0UAMD/w3eVjNpsNj399NOy2+06fPiwVq9erejoaDVp0kRLlixRbm6u0tLSFBoaqnXr1slut2v27NmyWq0KCgrSkCFDNG/ePNntdh06dEi/+93vNGPGDEVERCg9PV3SlfImwzBUu3ZttWzZUklJSZo1a5YWLlwoPz8/PfLIIzp8+LAGDRqktm3byjRN3X///Tpx4oSaN2+uvLw8tW7dmuZo4BYiaMBtxS/iAHB3ady4sTZt2qTx48fL399f/v7+Kigo0KhRoyRJ4eHh2r9/v5577jkVFBTon//8pwYMGKA//vGPOnXqlJKTk7V48WIFBAQoISFBM3QnNxsAABHeSURBVGfOVFlZmUaPHq233npLHTt2VG5urkJCQrRp0yaNHj1aFRUVmjx5st55552qHogdO3bo0KFDeuSRRzR9+nTZbDa9+uqrunjxYtXOVpMnT1ZGRobmzZvnyVuGu9E92E5D0AAAAG6oZ8+eOnXqVNW50+nUiRMnNHfuXDkcDk2cOFEdOnSQJBUVFam4uFgbNmzQG2+8oaioKF24cEHdunXTM888I5vNJl9fX61evbpqsv1nn32m9PR0NW3aVMXFxSoqKpLD4VBUVJSGDBmiwMBAlZaWKj4+Xunp6frPf/6j4cOH68CBA4qJiVGbNm10/PhxdezYUUuWLFF+fr5mzJihbt26eeqWAXcVehoAAMAP0qZNG23atEnBwcHavn27nnvuOdWqVUvHjh2r6nlITU3V/Pnz5XQ6lZCQoC1btujy5cvq2rWrUlJS1LhxYwUFBenJJ5/UG2+8obVr1yohIUFNmjRRYWGhvv76a7Vu3Vp79uxRbGysHn/8cQ0cOFBJSUmqV6+e4uLiZLFYlJWVpbi4OG3YsEFFRUUqLS3V3Llzqw2gw49SjShPMPwjTfX2YLlbqmd6GugOBAAAbuvZs6ciIiKuO2w2m1544QVZLBZt3bpV/fv3V1JS0nVbovbu3Vu7d+9WRESESktLdfToUWVmZqpu3bpyOp3q0KGDLBaLPv30U4WFhengwYNq0KCBvL29ZbFYlJqaqs6dO2vt2rUyTVObN2/WU089pZ07d8pqtWrr1q1atGiRcnJy1KtXL23evFlBQUHy8fHRvHnztG3bNg/eNdxVTEkVHjw8hEwDAAD4QWw2m7p3764DBw4oNjZWa9as0aRJk7RgwQLVrVtXr7/+uiZOnKjAwECVl5eroqJCM2fO1JgxY2SxWFRZWalatWqpqKhII0aMUFpamo4cOSK73a5atWqppKREnTt3VseOHfXhhx/q4sWLkqSIiAiZpqmsrCw5nU61bt1ax48fV+PGjeXl5aXu3btryZIlaty4saxWq1588UVNnjzZw3cLLtSMTEOjSFM/9WCm4SMyDQAAoAby9/fXm2++qYiICCUkJMjPz08ffvih2rVrp3Pnzik1NVUZGRlq2LChtmzZokaNGqm4uFiGYahBgwaKiopSq1at1KlTJ8XGxurYsWMKDg7W0KFDVVFRoVGjRik+Pl4rVqxQSEiIRowYIavVqj/84Q+6fPmyxo4dq7CwMH399dfy8vLS0KFDlZ6ermeffVa+vr4KDg7W4sWLCRhwa9yjE6HJNAAAgB9sx44dmjRpkgzD0OHDh1VYWKixY8dqypQpeuKJJ7Rx40ZZLBY9//zzioqK0quvvqqysjKlpKQoNzdXU6dOVUBAgE6dOiXTNNW/f3+NGTNGvXr1kp+fnwoLC1VRUaGWLVvqyy+/VGBgoCSpoqJCDRs2VHl5udq0aaOsrCw5HI6quSN2u11TpkzRpEmT9Nprr2n9+vWqXbu2/vznP+vhhx/28F3Dt9SMTEPDSFOPeTDT8A8yDQAAoIaKiorS8ePHlZKSonfffVe+vr5KSkqS0+nUzp07NXjwYP3+97/X8uXL1aVLF/n7+6tv374aNmyYnE6nTNNUWlqaunTpIqvVqr///e+qW7euysrK9Otf/1ozZsyQJK1atUoNGjSoes/S0lKZpqnRo0drx44dcjgcat++vUpLSzVhwgR5e3trxYoVioqK0t69e5WVlaWFCxfqpZde8uTtAmoctlwFAAA/mNVq1bx589S7d28VFRUpJCRE4eHhGjZsmHx9feXn56eRI0cqJSVFXbt2VWlpqX7zm99Iknbu3Kk6deooNjZW58+fl8VikcVi0bp16xQSEqLp06ersrJSdevW1aVLl7Rz504FBwcrMzNT7du3V7NmzeTt7a2XX35ZLVq0kNVqVWhoqPz8/PTVV1/pwQcfVHx8vPbu3SvDMNSlSxdduHBBJ0+eVEBAgIfvHGocU/fknAYyDQAA4Jbo27evMjMztXr1avn7+1c91rRpUwUGBmrr1q06d+6cHA6HgoKCZLFc+RqSn58vLy8vHTp0SMHBwSovL1dkZKQOHjwoX19frVq1SgMHDtSlS5c0aNAgrVu3TvXr19fo0aM1b948nTt3TtOmTdP27dsVHR2twsJCnTx5Urm5uXrmmWfUrFkz7d27V5K0Zs0a+fn5qaCgQHFxcXr77bc9dr+AmoSgAQAA3FJRUVHKyspSdna2HA6Hjh49qoSEBL3yyisaN26cfv7zn+vy5cuaM2eOpCvD4GJjY7V48WK1bdtWVqtVw4cP17Zt23T69GnVrVtX27dvl6+vr0aOHKlFixbpyJEjVdd89NFH5efnJ6vVqmHDhunQoUMqLCzUY489poEDByomJkb169eXaZqqX7++unbtqujoaP3tb3+jORo372qmwVOHhxA0AACAW+raUqWxY8fK399fly5dkiTt27dPLVq00MiRI5WRkaHQ0FAVFxdr6NChWrNmjUaNGiWr1aqZM2cqNzdX8fHx+vjjj5WcnKw2bdooJSVFRUVFqlOnji5duqTQ0FCtXLlSFRUVOnv2rJKSkjRlyhT5+PgoICBAM2fO1Jo1a3T+/Hm9/PLLMowrvbZ5eXlVzdQAboygAQAA3HJXS5VycnLkdDq1Z88excXFad++ferXr5+Ki4uVl5cnSerevbv+/e9/Kz8/X/v371dCQoIOHTokX19fpaamas6cObp8+bLOnz+v48ePKzw8XKdOnVL//v0lSQ8++KA+++wzhYWF6cKFC1q+fLlM05RhGOrevbv69u2roKAgzZgxQ+PGjdO2bdt04sQJ/eIXv9CQIUMUGhqqDh06aM+ePZ68ZcCPGkEDAAC4ba5mHaZOnaqPPvpIiYmJatu2rf70pz+pU6dOysjIUHZ2trKzs5WZmalFixbpnXfe0QcffCCr1apx48appKRE7777rubPn6/Dhw8rOztbY8aMUWVlpTZu3KinnnpK4eHhqlOnjhwOhzIyMuTj46PU1FTZ7XZZLBYlJiZq6NChOnr0qLy9vbVt2zbFxMRo9erV7KiEm3OPToQmaAAAALdV3759tWrVKsXExGjSpEnauXOnAgMD9fjjj8vb21vJycnq3r27HnvsMb3//vsKCQnR6tWrZRiGpk2bptdff10Wi0V9+vTRmjVr5O/vrwEDBmjt2rVq1KiRevbsKUnq1q2bfvWrX6ldu3bq3LmzZs2apd27dysjI0NDhw7V/PnzlZGRIX9/f0VGRqqgoEC1a9eWzWa7bkclANURNAAAgNvu2ubonJwcnTt3Tv369ZMkBQUFKT8/X/369dPSpUslSQcPHlTXrl1lGIYGDBggh8OhgoICHTx4UEVFRYqOjlZUVJTKy8u1Z88e2e12LVu2TD179tTJkyfVo0cPlZSU6Gc/+5nOnDlz3daqp0+fliQdOHBAFoulaqenq+sAbugenAhN0AAAAG67a5ujX3vttao5DpMnT67qJRg+fLhsNptCQ0Nls9mq5jhcLT2KjY3V2rVr9fzzz8vLy0tWq1UxMTGaOnWq2rVrp8TERO3fv18VFRV68803tWzZMiUnJ1+3jpUrV6qkpEQdO3bUgQMH9NZbb1U1RwP4fgQNAADgjviuOQ5vv/121RwHX19frVixQkeOHFHXrl2r5jg4HA5ZLBZlZ2drwoQJatSoUdU1DcPQqlWrdPToUfXp00cLFy6smgGxdetW9enTRz/5yU+qyo4GDRqk0NBQ7du3T4mJiVXTpSV2VAJcIWgAAAB31LWlSlfLiq6WKl11banSRx99pB49esgwDPXr10/Lli1TeXm5srOzlZWVpejoaEnSvHnzdOHCBR0/flydOnXSL3/5y2rXWrp0qZ588smqx//yl7/INE2lpaXJz8+PCdG4sXt0ToPVc28NAADuRdeWKjmdTg0bNqyqVCkyMlL9+vXT8OHD9eyzzyo0NFSNGjXSsmXLJF0pVUpMTFT79u1ltVo1f/58eXl5SZLKysrk5eUlh8Ohc+fOKSYmRpI0ceJEJSYm6oMPPlBwcLCWL18u6UrmY/369QoNDVXt2rW1ZMkSz9wQoAYwTNN09bzLJwEAAIBbpEY0lxj1Ik099JXnFvCZsds0zcg7/bZkGgAAAAB3XS1PusfQ0wAAAADAJTINAAAAgLuuToS+x5BpAAAAAOASQQMAAAAAlyhPAgAAANxlSnJ6ehF3HpkGAAAAAC6RaQAAAABuBluuAgAAAMD1CBoAAAAAuER5EgAAAOAuJkIDAAAAQHVkGgAAAAB3MREaAAAAAKojaAAAAADgEuVJAAAAgLuYCA0AAAAA1ZFpAAAAANzFlqsAAAAAUB1BAwAAAACXKE8CAAAAbgblSQAAAABwPTINAAAAgLuYCA0AAAAA1RE0AAAAAHCJ8iQAAADAXUyEBgAAAIDqCBoAAAAAuER5EgAAAOAuU8xpAAAAAIBvI9MAAAAAuItMAwAAAABUR9AAAAAAwCXKkwAAAAB3mZIqPL2IO49MAwAAAHCXMAxjsWEYZwzD+N/ved4wDOM9wzCOGIax3zCMh925LkEDAAAAcDOcHjxu7M+S+rh4Pl5S2DfHCEnvu3NRggYAAADgLmGa5jZJhS5e8qSkv5hXpElqYBhGwI2uS9AAAAAA1ByNDcP46ppjxE3+faCkE9ec533zmEs0QgMAAAA3w/Tou58zTTPyTr8pmQYAAADg3pEvqfk150HfPOYSQQMAAABw71gr6blvdlHqIqnINM2TN/ojypMAAACAu4RhGKmSuutK70OepDcl3SdJpmn+j6T1kvpKOiLpsqRfuHNdggYAAADgLmGaZvINnjclvXKz16U8CQAAAIBLBA0AAAAAXCJoAAAAAOASQQMAAAAAlwgaAAAAALjE7kkAAACA20xJFZ5exB1HpgEAAACAS2QaAAAAALeZkhyeXsQdR6YBAAAAgEsEDQAAAABcojwJAAAAcBuN0AAAAABQDUEDAAAAAJcoTwIAAADcxu5JAAAAAFANmQYAAADAbTRCAwAAAEA1BA0AAAAAXKI8CQAAAHAb5UkAAAAAUA2ZBgAAAOCmsOUqAAAAAFyHoAEAAACAS5QnAQAAAG6jERoAAAAAqiHTAAAAALjNFI3QAAAAAPAtBA0AAAAAXKI8CQAAAHAbjdAAAAAAUA2ZBgAAAMBtNEIDAAAAQDUEDQAAAABcojwJAAAAcBuN0AAAAABQDUEDAAAAAJcoTwIAAADcxu5JAAAAAFANmQYAAADAbTRCAwAAAEA1BA0AAAAAXKI8CQAAAHAbjdAAAAAAUA2ZBgAAAMBtNEIDAAAAQDUEDQAAAABcojwJAAAAuCk0QgMAAADAdcg0AAAAAG6jERoAAAAAqiFoAAAAAOAS5UkAAACA2yhPAgAAAIBqyDQAAAAAbjPFlqsAAAAA8C0EDQAAAABcojwJAAAAcBuN0AAAAABQDZkGAAAAwG00QgMAAABANQQNAAAAAFyiPAkAAABwG43QAAAAAFANQQMAAAAAlyhPAgAAANzG7kkAAAAAUA2ZBgAAAMBtNEIDAAAAQDUEDQAAAABcojwJAAAAcBuN0AAAAABQDZkGAAAAwG00QgMAAABANQQNAAAAwF3EMIw+hmEcNgzjiGEYE7/j+aGGYZw1DCP9m+OXN7om5UkAAACA237cjdCGYXhJmi+pl6Q8SbsMw1hrmmbGt176d9M0X3X3umQaAAAAgLtHtKQjpmkeM03TLmmZpCd/6EVvlGkwfugbAAAAAHePkxuktxp7cAG+hmF8dc35QtM0F15zHijpxDXneZI6f8d1BhmG0U1SpqRfmaZ54jteU4XyJAAAAMBNpmn28fQaboF/Sko1TbPcMIyRkpZK6uHqDyhPAgAAAO4e+ZKaX3Me9M1jVUzTtJmmWf7NaYqk/7rRRQkaAAAAgLvHLklhhmG0NAzDW1KSpLXXvsAwjIBrTvtJOniji1KeBAAAANwlTNN0GIbxqqQNkrwkLTZN84BhGG9L+so0zbWS/tswjH66sg1UoaShN7quYZrmbVw2AAAAgJqO8iQAAAAALhE0AAAAAHCJoAEAAACASwQNAAAAAFwiaAAAAADgEkEDAAAAAJcIGgAAAAC49H9ihdplABlTEwAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<Figure size 1080x864 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "pp.plot_grid(g, cell_value=p_class, figsize=(15, 12))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "To understand what goes on under the hood of the Mpfa class, we can also create the lhs and rhs manually. \n",
    "\n",
    "Mpfa.discretize() stores the flux discretization as two sparse matrices \"flux\" and \"bound_flux\" in the data dictionary:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "flux matrix shape: (60, 25)\n",
      "bound_flux matrix shape: (60, 60) \n"
     ]
    }
   ],
   "source": [
    "flux = data[pp.DISCRETIZATION_MATRICES][\"flow\"][\"flux\"]\n",
    "bound_flux = data[pp.DISCRETIZATION_MATRICES][\"flow\"][\"bound_flux\"]\n",
    "print(\"flux matrix shape: {}\".format(flux.shape))\n",
    "print(\"bound_flux matrix shape: {} \".format(bound_flux.shape))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    " They give  the discretization of the fluxes over each face:\n",
    "\\begin{equation}\n",
    "F = \\text{flux} \\cdot p + \\text{bound_flux} \\cdot p_b\n",
    "\\end{equation}\n",
    "Here $p$ is a vector of cell center pressure and has length g.num_cells. The vector $p_b$ is the boundary condition values. It is the pressure for Dirichlet boundaries and flux for Neumann boundaries and has length g.num_faces.\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We are now ready to set up the linear system of equations and solve it. We assume no source and sinks $f = 0$. Each row in the discretized system is now\n",
    "\\begin{equation}\n",
    "\\int_{\\Omega_k} f dv = \\int_{\\partial\\Omega_k} F dA = [div \\cdot \\text{flux} \\cdot p + div\\cdot\\text{bound_flux}\\cdot p_b]_k,\n",
    "\\end{equation}\n",
    "We move the known boundary variable $u_b$ over to the right hand side and solve the system:\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "div = pp.fvutils.scalar_divergence(g)\n",
    "A = div * flux\n",
    "b = f - div * bound_flux * p_b\n",
    "\n",
    "p = np.linalg.solve(A.A, b)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "This gives us the save results as using the Mpfa class:\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [],
   "source": [
    "assert np.allclose(p, p_class)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We can also plot the pressure"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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zjvv1M9+9jNdffXVboYKoIn4lQmajbVWX3zxhdq1axf2NpfWWllrFQyGn020b98+EoYGFBYWqry8XN26dXM7lKhV1fZGwlA/Y4w8Ho8CgRist0eoc+fO8nq9OnHihNuhRCVjjPr27au4uDjt3LlTtReXTUtL03vvvaeHH36YqgJav6oVod16uIRKA5qNMUYZGRlav3592O0NtSSFQiG1a9eOliQHpaWltG01oKr1hknQznw+nzZu3MhkaAehUEjHjx9XYmIiv8hw4PP5dOzYsRqtSlWTo621uvvuu9W5c2d16tSpxudoUwKiG/86oFmF+4f1zApDuJak/fv3q6ioqHrhIISXn5+vkpIS9e/f3+1QotqRI0fk8/mUnp7udihRjcnikdm/f7+stTH98/T111/r29/+tvbv369evXrpzTffrFFNrro99rJly/T2229Lkh5++GHdddddkqQ1a9ZoxowZKi4u1q233qqXX35Zxhi9//77Gjx4sHbs2KENGzYoIyOjesznnntOr7/+ujwej375y19qypQpkqTMzEw98MADCgaDmjNnjh555JEWPBNAbDG1S4i1OG4EnFTd5jIrK0uXX3651q1bp/HjxysUCmnjxo1h25IqKioUDP7/9u49OuY7/+P46zuZJnENgm0kpCJxS4r2l4Q0JWopka26VJqsXixbevOrdVm2TrVb7BZdly7bH1LW9uzGUhZbWmtdVqtSitCfIEEkkrhOSIIkk5l8f3+oHJp2jF8xDc/HOd8/vjOT73zO95ycmfe83+/P2/m9Q99wxbXNz9wn1642QfMLumtX/1+/PYwL17t2e+N79UeNBQsWqH79+kpOTlZqaqpKSko0YsSI615TXFysF198Ue+99558fHz00ksv6f3339e0adO0f/9+NW3aVKWlpbp06ZICAwPl5+dXta12Tk6OIiIitGPHDklXZj4kJydr586dKigoUM+ePZWZmSlJat26tTZu3KigoCBFRUUpNTVV7du3v7M3BLdSjfhAM5pEmurvwQx/irHbNM3IG7/w1uJTFHeU0+lUZWXld2YYTpw4oQsXLig8PPye/TB2V2Zmppo3b66AgABPL+VHjyZo91RWVmr37t00Q7vBZrPp5MmTioiI8PRSPGLkyJFav369vL29lZGRoV27dunMmTPXZRxWrFih+Ph4tWzZUp988okuXryo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\n",
      "text/plain": [
       "<Figure size 1080x864 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "pp.plot_grid(g, cell_value=p, figsize=(15, 12))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We can also retrieve the flux for each face. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAA1MAAAKaCAYAAADbKANUAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4zLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvnQurowAAIABJREFUeJzs3XmYXXVhP/73zUzWSYBACIQkEMK+BUxCWNxYxZUaRcFClS/Q2q883+JDf21BERWtqK1W+kVtVagLX6TWpyoFSUXAhSWEQAiGsCRCIBuBAIFMksls5/fHkCmBTCCHZE7uzOv1PDx37pwzd973w8nMvO/nc86tFUURAAAAtsyAqgMAAADUI2UKAACgBGUKAACgBGUKAACgBGUKAACghMbX2O5SfwAAQH9W62mDmSkAAIASlCkAAIASlCkAAIASlCkAAIASlCkAAIASlCkAAIASlCkAAIASlCkAAIASlCkAAIASlCkAAIASlCkAAIASlCkAAIASlCkAAIASlCkAAIASlCkAAIASlCkAAIASlCkAAIASlCkAAIASlCkAAIASlCkAAIASlCkAAIASlCkAAIASlCkAAIASlCkAAIASlCkAAIASlCkAAIASlCkAAIASlCkAAIASlCkAAIASlCkAAIASlCkAAIASlCkAAIASlCkAAIASlCkAAIASlCkAAIASlCkAAIASlCmAfmT48OF57LHHNrnt+9//ft7ylrf0ciIAqF/KFMBWdu2112bq1KkZPnx4xowZk3e96125/fbbSz9erVbLwoULN/rc6tWrc+GFF2bChAlpamrKnnvumdNOOy133333Zh+rubk5EydOLJWjtbU1n/vc57LffvulqakpEyZMyDnnnJNFixaVerxt5XOf+1zOOuusqmNsU4sWLUqtVkt7e3vVUQD6NWUKYCv6+te/nk9+8pP51Kc+lRUrVuTJJ5/MJz7xifziF7/Y4sfq6Q/l9evX54QTTsgf/vCH3HDDDXnxxRfz0EMP5YwzzshNN920RY+1JU477bRcf/31ufbaa/PCCy9k7ty5mTJlSm655ZY3/NhsfYoWQC8oimJz/wHwOq1atapoamoqfvKTn/S4z913310cffTRxY477ljsvvvuxfnnn1+sX7++e3uS4sorryz23XffYsKECcVb3/rWIkkxbNiwoqmpqbjuuuuK7373u8Xuu+9eNDc3bzbPKx9rw+cWLFhQFEVRrFy5snjf+95XjBgxojjyyCOLSy65pHjzm9+8yce6+eabiyFDhhRPPvlkj99v6dKlxfve975i5MiRxT777FN85zvf6d722c9+tjjttNOKM888sxg+fHhx6KGHFo888kjxpS99qdh1112LcePGFf/93//dvf/b3/724qKLLiqOPPLIYsSIEcWpp55aPPvss0VRFMVtt91WjB07dqPvvddeexU333xzcdNNNxUDBw4sGhsbi6ampmLSpElFUXT9vznnnHOK3Xffvdhjjz2KT3/600V7e/smn8fatWuLj370o8VOO+1UHHjggcVXvvKVjb7f0qVLiw984APFqFGjigkTJhRXXHFF97aWlpbiggsuKMaMGVOMGTOmuOCCC4qWlpaNcn/lK18pdt1112L33XcvfvaznxU33nhjsd9++xUjR44s/v7v/777sTo6OorLL7+8mDhxYrHzzjsXH/rQh7rHYPz48UWSoqmpqWhqairuvPPO4t/+7d+KY489tvjkJz9Z7LzzzsXFF19cjBw5snjggQe6H3PFihXF0KFDi6effrrH/48AvEqPfcnMFMBWctddd6WlpSXTp0/vcZ+Ghob80z/9U1auXJm77rort9xyS771rW9ttM/Pf/7z3H333Zk/f35+97vfJUnmzp2b5ubmnH766fn1r3+dU045JU1NTa+Z6eWP9Urnn39+hgwZkuXLl+fqq6/O1Vdf3ePj/PrXv860adMyfvz4Hvc544wzMm7cuCxbtiw//elP86lPfSq33npr9/b/+q//yp/92Z/l+eefz5ve9Kaccsop6ezszNKlS3PppZfm4x//+EaP98Mf/jBXX311li9fnsbGxvzVX/3Vaz7fd77znfnUpz6V008/Pc3NzZk7d26S5Oyzz05jY2MWLlyYOXPm5Fe/+lW+973vbfIxPv/5z2fRokV57LHHcvPNN+eaa67p3tbZ2Zn3ve99Ofzww7N06dLccsst+cY3vpH//u//TpL8/d//fWbOnJn7778/c+fOzaxZs/LFL36x++ufeuqptLS0ZOnSpbnsssvy53/+57nmmmty77335ve//32+8IUv5PHHH0+S/N//+3/z85//PL/97W+zbNmyjBw5Mueff36SdB8Xq1atSnNzc4455pgkyd13352JEydmxYoV+cxnPpMzzjhjo/w//vGPc+KJJ2bXXXd9zbEE4HXYXNOqpPcB1Klrrrmm2G233bboa/7pn/6peP/73999P0lxyy23bLRPXjabVBRFceKJJxZ/93d/131/zpw5xY477liMGDGi2H///V/XY7W3txeNjY3FQw891L3t4osv7nFm6rzzzitOP/30Hp/Hk08+WQwYMKB48cUXuz930UUXFR/72MeKouiamTrppJO6t11//fVFU1NT9+zQiy++WCQpnn/++aIoumamXv4cH3zwwWLgwIFFe3v7ZmemNnyvM888s3vbU089VQwaNKhYu3Zt9+euvfba4rjjjtvkc9l7772LGTNmdN//7ne/2/39Zs6cWYwfP36j/b/0pS8VZ599dlEURTFx4sTixhtv7N42Y8aMYq+99iqKomtmasiQIa96zjNnzuzef/LkycXPfvazoiiK4sADDyx+/etfd29btmxZ0djYWLS1tRWPP/54kaRoa2vr3v5v//Zvr8q2IW9nZ2dRFEUxZcqU4t///d83+bwB6FGPfamxwh4H0KfssssuWblyZdrb29PYuOkfr48++mguvPDCzJ49O2vXrk17e3umTJmy0T6bm/3Z8H2WL1/eff+II47IqlWr8utf/zrnnXfe63qsZ555Ju3t7Rtt32uvvTb7PR999NEety9btiw777xzRowYsdHjzZ49u/v+brvt1v3x0KFDM2rUqDQ0NHTfT7oukLHTTju9Kvtee+2Vtra2rFy5sscMPXniiSfS1taWMWPGdH+us7Ozx7FZtmzZRtte/vETTzyRZcuWdWdMko6Ojrz1rW/t/tqXj+Nee+2VZcuWdd/fZZddXvWcXzkuzc3N3d9r+vTpGTDgfxaRNDQ0ZMWKFT0+11c+p6OOOirDhg3Lb37zm4wZMyYLFy7Mqaee2uPXA7BlLPMD2EqOOeaYDB48OD//+c973Od//+//nQMPPDALFizIiy++mC996UspimKjfWq12ma/z4knnphf/epXWbNmzWtm6umxdt111zQ2Nmbx4sXdn3vyySd7fJyTTjops2bNypIlSza5fY899shzzz2X1atXb/R4Y8eOfc2MPXlltoEDB2bUqFFpamrK2rVru7d1dHTkmWee6b7/yuc8fvz4DB48OCtXrsyqVauyatWqvPjii3nwwQc3+X3HjBmz0fN8eY7x48dn77337n6cVatWZfXq1fnlL3+ZpGscnnjiiY1y77HHHqWe//jx43PTTTdt9L1aWloyduzYHv+/burzH/vYx3LNNdfkRz/6UU477bQMGTKkVB4AXk2ZAthKdtxxx1x22WU5//zz8/Of/zxr165NW1tbbrrppvzt3/5tkq5Lmu+www4ZPnx4Hn744Xz7299+zcfdbbfdNnpvqI9+9KMZM2ZMpk+fnnnz5qWjoyMtLS0bzQK9loaGhnzgAx/I5z73uaxduzbz58/PD37wgx73P+mkk3LyySdn+vTpuffee9Pe3p7Vq1fnX/7lX3L11Vdn/PjxOfbYY3PxxRenpaUlDzzwQK666qo3dInya665JvPnz8/atWtz6aWX5rTTTktDQ0P233//tLS05MYbb0xbW1u++MUvZv369d1ft9tuu2XRokXp7OxM0lWO3vGOd+Sv//qv8+KLL6azszN//OMf89vf/naT3/fDH/5wLr/88jz//PNZunRprrzyyu5t06ZNy4gRI/KVr3wl69atS0dHR+bNm5d77rknSfKRj3wkX/ziF/PMM89k5cqVueyyy0qPwV/+5V/m05/+dHc5e+aZZ7qvCrnrrrtmwIABPb5n2MudddZZ+dnPfpZrrrkmH/3oR0tlAWDTlCmAreiv//qv8/Wvfz1f/OIXs+uuu2b8+PG58sor8/73vz9J8o//+I+59tprM2LEiPz5n/95Tj/99Nd8zM997nP52Mc+lp122ik/+clPMmTIkNx22205+OCD8573vCc77LBDDjjggNxzzz35yU9+8rqzXnnllWlubs7uu++es88+O//rf/2vze7/05/+NO9+97tz+umnZ8cdd8yhhx6a2bNn56STTkrSdXGDRYsWZY899sj06dPz+c9/vntbGX/2Z3+Ws88+O7vvvntaWlryz//8z0m6Suu3vvWtnHfeeRk7dmyampoybty47q/70Ic+lKRrSd3kyZOTdF3MorW1NQcffHBGjhyZ0047baOlki936aWXZty4cdl7771z0kkn5bTTTsvgwYOTdJXQG264Iffff3/23nvvjBo1Kuedd15eeOGFJMkll1ySqVOnZtKkSTnssMMyefLkXHLJJaWe/wUXXJBTTz0173jHOzJixIgcffTR3e8jNmzYsHz605/Om9/85uy0006ZOXNmj48zfvz4TJ48ObVarXs5IgBbR+2Vy0teYbMb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\n",
      "text/plain": [
       "<Figure size 1080x864 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "F = flux * p + bound_flux * p_b\n",
    "\n",
    "neumann_faces = np.argwhere(bound.is_neu)\n",
    "\n",
    "assert np.allclose(np.abs(p_b[neumann_faces]), np.abs(F[neumann_faces]))\n",
    "\n",
    "F_n = F * g.face_normals\n",
    "pp.plot_grid(g, vector_value=F_n, figsize=(15, 12))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [],
   "source": [
    "# We now test the solution (mostly for debugging purposes)\n",
    "p_exact = g.cell_centers[1]\n",
    "assert np.allclose(p, p_exact)"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.9"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
